package com.bitoon.basketdudes.web;

import com.bitoon.basketdudes.web.datos.MensajeUsuario;
import java.io.File;
import java.io.FileOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;

public class Mensajes extends BaseAction {

    private Logger log = Logger.getLogger(Mensajes.class);

    @Override
    public String execute() {
        return SUCCESS;
    }

    @Override
    public int escribirMensaje(MensajeUsuario mensaje) {
        int retorno = 0;

        try {
            Document doc = null;
            switch (mensaje.getTipoDestinatario()) {
                case 0:
                    doc = obtenerXMLMensajesUsuario(mensaje.getReceiver());
                    break;
                case 1:
                    doc = obtenerXMLMensajesTorneo(mensaje.getReceiver());
                    break;
            }

            log.debug("doc antes de nuevo mensaje: " + doc);

            Element rootMensajes = null;

            if (doc != null) {
                log.debug("doc es distinto de null");
                rootMensajes = doc.getRootElement();
            } else {
                log.debug("doc es null");
                rootMensajes = new Element("mensajes");
                doc = new Document(rootMensajes);
            }

            Element elMensaje = new Element("mensaje");

            int numMensajes = rootMensajes.getChildren().size();

            elMensaje.setAttribute("id", Integer.toString(numMensajes+1));
            elMensaje.setAttribute("te", Integer.toString(mensaje.getTipoUsuarioEmisor()));
            elMensaje.setAttribute("f", mensaje.getFrom());
            elMensaje.setAttribute("fu", mensaje.getFromUrl());
            elMensaje.setAttribute("s", Integer.toString(mensaje.getSender()));
            elMensaje.setAttribute("t", mensaje.getTo());

            DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
            elMensaje.setAttribute("d", df.format(new java.util.Date())); // Fecha actual

            elMensaje.setAttribute("a", mensaje.getAsunto());
            elMensaje.setAttribute("b", mensaje.getTexto());

            elMensaje.setAttribute("w", Integer.toString(mensaje.RECIBIDO));

            rootMensajes.addContent(elMensaje);

            String filenameDestino = "";

            switch (mensaje.getTipoDestinatario()) {
                case 0:
                    filenameDestino = getFicheroMensajeUsuario(mensaje.getReceiver());

                    break;
                case 1:
                    filenameDestino = getFicheroMensajeTorneo(mensaje.getReceiver());
                    break;
            }
            log.debug("Escribiendo mensaje en " + filenameDestino);
            File f = new File(filenameDestino);
            FileOutputStream fout = new FileOutputStream(f);

            XMLOutputter out = new XMLOutputter();
            out.output(doc, fout);
        } catch (Exception e) {
            log.error("Error", e);
        }

        return retorno;
    }

}
